{
    // 字面量
    let a:11;
    a = 11;

    let b: 'hello' | 1;
    b = 'hello';
    b = 1;

    let c:any = 0;
    c = 'hello';
    c = 1;
    c = true;
    c = {};
    c = [];

    let d:unknown = 0;
    d = 'hello';
    d = 1;
    d = true;
    d = {};
    d = [];

    let e:string = 'hello';
    e = c;
    // e = d; // unknown类型不能直接赋值给其他类型
    // unknown 是 any 的安全类型
    if(typeof d === 'string'){
        e = d;
    }
    e = d as string;
    e = <string>d;

    function fu():void{
        return undefined; // void类型只能返回undefined
    }

    function fu2():never{
        throw new Error('error'); // never类型表示函数不会正常结束
    }
}